The present invention is related to the field of data communication networks and more particularly to auto-negotiation between communicatively coupled devices.
In data communications networks, devices that communicate with each other on a given network link may be configured for either half duplex or full duplex communication. In full duplex communication, two devices may transmit to each other simultaneously. In half duplex communication, only one device at a time may transmit and the devices therefore take turns transmitting to each other.
There are different ways in which the communication mode (half duplex or full duplex) on a given link is established. A device connected to a link may have a fixed capability of one or the other mode, and therefore always operates using its fixed mode. Other types of devices are “configurable”, i.e., capable of operating in either mode. A configurable device is configured to operate in a given mode on a network link based in part on the capabilities of the link and the device attached at the other end of the link. In accordance with a configuration process used on Ethernet network links and specified in IEEE standard 802.3u, devices connected to a link engage in “auto-negotiation” to determine, among other things, whether to use half duplex or full duplex transmission on the link. Auto negotiation proceeds during an initialization stage of link operation. The devices exchange control messages conveying capability information and subsequently exchange control messages in an attempt to agree on the transmission mode to be used. The auto negotiation process can result in the devices agreeing to employ half duplex transmission, agreeing to employ full duplex transmission or failing to agree on a transmission mode. A failure to agree can result, for example, when one device does not engage in the auto-negotiation dialog, which is permitted by the 802.3u specification. When agreement is not reached, half-duplex transmission is used by default in accordance with the 802.3u specification.
In Ethernet networks, a device obtains access to the transmission medium by listening for a period of no transmissions, beginning to transmit, and listening to its own transmission. If the transmission is received as sent, the device continues transmitting until the end of the message being sent. The device may detect that the transmission on the medium is different from what has been sent. This situation is referred to as a “collision”, because it typically results from two devices' transmitting at the same time. If a collision is detected, the device waits a random interval and then re-transmits the same message, again listening for proper completion. Because devices must detect silence before transmitting, collisions normally occur only during a brief initial interval of transmission, which is specified as the minimum packet duration. Collisions occurring later in transmissions are usually indicative of an error condition. Also, the rate of normal (i.e. early) collisions is generally relatively low in a properly operating network link. An excessive rate of collisions, whether normal or late, is also indicative of an error condition.
It has been observed in some networks that devices on transmission links become mis-configured with respect to the transmission mode to be employed, resulting in improper operation of the link and the attached devices. In particular, it has been observed that under some circumstances a device using 802.3u auto-negotiation chooses half duplex operation despite being connected to a device that is fixed to operate in full duplex mode. The devices attached to the link have different expectations about the conditions under which transmission is permitted. Consequently, the network link operates in an erroneous manner, which may be indicated by the occurrence of late collisions and/or an excessively high rate of collisions (whether normal or late). Under some circumstances, an excessive amount of re-transmitting occurs in response to these collisions, which can lead to undesirable congestion in the network. Some devices can detect this situation and shut down the connection to the misbehaving link. However, this remedy is generally undesirable because it renders the link completely unusable. It would be desirable to respond to mis-configurations in a manner that restores link usability if possible.